/**
  * Author: Mei
  * Date: 2020-11-22 9:48
  * Description: 
  *
  */
#include <iostream>
#include <functional>

using namespace std;
using namespace std::placeholders;

typedef double(*FUNC)(double);

double func(double d) {
    return d / 2;
}

int main() {
    result_of<FUNC(double)>::type d = func(9.0);

    cout << d << endl;
    return 0;
}